package leetcode_900;

import java.util.HashSet;
import java.util.Set;

/**
 *@author 周杨
 *BitwiseORsOfSubarrays_898 找出一个数组里连续子数组的异或结果的大小
 *describe:用set AC 65%
 *2018年11月12日 下午4:27:44
 */
public class BitwiseORsOfSubarrays_898 {
	/**
	 * describe:用set保存前面存储的结果 看来用for(Type element:elements) 遍历速度更快 AC 65%
	 * 2018年11月12日 下午4:08:33
	 */
	public int subarrayBitwiseORs(int[] A) {
		Set<Integer> set = new HashSet<Integer>();
		Set<Integer> res = new HashSet<Integer>();
		set.add(0);
		for (int i :A) {
			Set<Integer> now = new HashSet<Integer>();
			now.add(i);
			for (int j : set) {
				now.add(j | i);
			}
			res.addAll(now);
			set = now;
		}
		return res.size();
	}
}
